package com.dp.mallchat.common.user.service;

import com.dp.mallchat.common.common.domain.dto.PushMessageDTO;
import com.dp.mallchat.common.user.domain.ws.resp.WSBaseResp;
import io.netty.channel.Channel;

public interface WebSocketService {
    /**
     * 处理所有ws连接的事件
     *
     * @param channel
     */
    void connect(Channel channel);

    /**
     * 处理用户扫码请求
     * @param channel
     */
    void handleLoginReq(Channel channel);

    /**
     * 移除连接
     * @param channel
     */
    void remove(Channel channel);

    /**
     * 走登录成功逻辑，通过code找到channel推送消息
     * @param code
     * @param uid
     */
    void scanLoginSuccess(Integer code, Long uid);

    /**
     * 等待用户授权
     * @param code
     */
    void waitAuthorization(Integer code);

    /**
     * token认证
     * @param channel
     * @param token
     */
    void authorization(Channel channel, String token);

    /**
     * 推送所有在线用户
     * @param wsBaseMsg 消息
     * @param skipUid 需要跳过的人
     */
    void sendToAllOnlineUser(WSBaseResp<?> wsBaseMsg, Long skipUid);

    /**
     *  指定用户对推送消息
     * @param wsBaseMsg
     */
    void sendToUid(WSBaseResp<?> wsBaseMsg, Long uid);
}
